package cn.edu.nju.ws.sview.group;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import cn.edu.nju.ws.sview.views.Group;
import cn.edu.nju.ws.sview.views.User;

public class GroupCreator extends HttpServlet {

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String option = null;
		String json = null;
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		if (request.getParameter("cg") != null) {
			json = request.getParameter("cg");
			option = "cg";
		}
		if (option.equals("cg")) {
			String str = URLDecoder.decode(json,"utf8");
			JSONObject reqjson = (JSONObject) JSONValue.parse(str);
			String gname = (String) reqjson.get("gname");
			String uname = (String) reqjson.get("uname");
			;// (String) request.getSession().getAttribute("user");
			Group group = null;
			if (uname == null) {
				throw new IllegalArgumentException(
						"The user name can not be null.");
			} else {
				group = new Group(gname, uname);
				group.serialize();
				User user = new User(uname);
				user.updateGroups();
				response.getWriter().print(Group.getGroupIdByName(gname));
			}
		}
	}

}
